package ar.com.tallerdos.smartdinner.activity;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import ar.com.tallerdos.smartdinner.R;
import ar.com.tallerdos.smartdinner.business.ComidaBusiness;
import ar.com.tallerdos.smartdinner.business.MesaBusiness;
import ar.com.tallerdos.smartdinner.model.Comida;
import ar.com.tallerdos.smartdinner.model.Mesa;
import ar.com.tallerdos.smartdinner.model.Pedido;
import ar.com.tallerdos.smartdinner.sync.NotificadorAbrirMesa;

public class AbrirMesaActivity extends Activity {

    public static final String MESAS_SELECCIONADAS = "ar.com.tallerdos.smartdinner.activity.AbrirMesaActivity.MESAS_SELECCIONADAS";

    private List<Mesa> mesas;
    private String mesasIds;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.mesa_abrir_activity);
    }

    public void abrirMesa(View view) {
	EditText cantComensalesEdit = (EditText) findViewById(R.id.cantidadDeComensalesValue);
	Integer cantComensales = null;
	try {
	    cantComensales = Integer.valueOf(cantComensalesEdit.getText().toString());
	} catch (NumberFormatException e) {
	    Toast.makeText(this, "Cantidad de Comensales No Válida", //TODO i18n
		 Toast.LENGTH_SHORT).show();
	    return;
	}
	
	if (this.mesas == null || this.mesas.isEmpty()) {
	    Toast.makeText(this, "Debe seleecionar al menos una mesa", //TODO i18n
		 Toast.LENGTH_SHORT).show();
	    return;
	}
	

	
	Comida comida = new Comida();
	comida.setCantidadComensales(cantComensales);
	comida.setMesas(mesas);
	comida.setPedidos(new ArrayList<Pedido>());
	
	NotificadorAbrirMesa mesaEstadoSync = new NotificadorAbrirMesa(comida);
	mesaEstadoSync.execute();
	
	Intent returnIntent = new Intent();
	ComidaBusiness.create(comida);
	
	returnIntent.putExtra("result", comida.getId().intValue());
	setResult(RESULT_OK, returnIntent);
	finish();
	
    }

    public void cancelarMesa(View view) {
	finish();
    }

    public void seleccionarMesas(View view) {
	Intent intent = new Intent(this, SeleccionarMesasActivity.class);
	intent.putExtra(MESAS_SELECCIONADAS,
		((TextView) findViewById(R.id.mesasSeleccionadasDescripcion)).getText());
	startActivityForResult(intent, 1);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

	if (requestCode == 1) {
	    if (resultCode == RESULT_OK) {
		String mesasIds = data.getStringExtra("result");
		this.mesasIds = mesasIds;
		mesas = new ArrayList<Mesa>();
		if (!mesasIds.isEmpty()) {
		    for (String id : mesasIds.split(",")) {
			try {
			    Mesa mesa = MesaBusiness.findById(Integer.valueOf(id));
			    mesas.add(mesa);
			} catch (Exception e) {
			    e.printStackTrace();
			}
		    }
		}
		actualizarDescripcionMesasSeleccionadas();
	    }
	    if (resultCode == RESULT_CANCELED) {
		// Write your code if there's no result
	    }
	}
    }

    private void actualizarDescripcionMesasSeleccionadas() {
	TextView descripcion = (TextView) findViewById(R.id.mesasSeleccionadasDescripcion);
	String texto = "";
	for (Mesa mesa : this.mesas) {
	    texto += mesa.getCodigo() + ", ";
	}
	if (texto.isEmpty()) {
	    texto = getResources().getString(R.string.seleccionar);
	} else {
	    texto = texto.substring(0, texto.length() - 2);
	}
	descripcion.setText(texto);
    }
}
